perm filename TRANS1[AM,DBL] blob sn#394271 filedate 1978-11-11 generic text, type T, neo UTF8
Now Recording on File TRANS1
:DI ROOT BO

ROOT
     LISPPROC
:SET HACKER
PROFILE: DO
:DI ROOT BO

ROOT
     BOOKKEEPING
          CREATED
               MODIFIED
          CREATOR
               MODIFIER
          DESCR
     DATATYPE
          ATOM
          BOOLEAN
          EXPR
          INTEGER
          INTERVAL
          LISP
          LIST
          MACRO
          NUMBER
          STRING
          TABLE
          TEXT
          UNIT
     LISPPROC
          WORKFN
               *EDITEXPR*
               *EDITMACRO*
               *PRINTMACRO*
               *TVMACRO*
:NE
(Closing NEWBOOT)
Knowledge Base: MATH

MATH doesn't exist.
Do you want to create a new knowledge base? (Y or N) ? Y
Do you want to start by making a copy of an old knowledge base? Y
Copy knowledge base named: NEWBOOT

(Fixing internal file references)
compiled on 31-Oct-78 09:06:38
FILE CREATED 31-Oct-78 09:06:32
NEWBOOTCOMS

compiling <MOLGEN>MATH.;2
listing? STF
EDITEXPR, EDITMACRO, PRINTMACRO, TVMACRO, 
<MOLGEN>MATH.COM;2

Version 10-Nov-78 14:04:59
:DI ROOT SP

ROOT
     BOOKKEEPING
          CREATED
               MODIFIED
          CREATOR
               MODIFIER
          DESCR
     DATATYPE
          ATOM
          BOOLEAN
          EXPR
          INTEGER
          INTERVAL
          LISP
          LIST
          MACRO
          NUMBER
          STRING
          TABLE
          TEXT
          UNIT
     LISPPROC
          WORKFN
:?

Legal commands are:
(COPY CREATE DELETE DISPLAY DONE EDIT GROUP MATCH MSG NETWORK OK PRINT RECORD RENAME SAVE SET-PROFILE SPECIALIZE SPLITUNIT SUMMARYFILE TRANSFER WHATSNEW ?MSGS) 
(You are editing Knowledge Base MATH)
(Use ↑K to recurse in the Network Editor.)
(Use ↑L to LOOK, that is, get a trace of where you are.)
:CRE
What is the name of the unit you want to create? 
CREATE: MATH-OBJECT
Parent of unit: ROOT
Relation: SPEC
Give a value for the DESCR slot
Text Editor
te: Constructs and functional operators from the realm of mathematics
te: do
Do you want to see what slots have already been filled? y

 DESCR:          (U)   from ROOT      <DESCR>     
Constructs and functional operators from the realm of mathematics
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:12:09
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:12:09


You can now create new slots or edit old ones.  When through type DONE
EDIT: ?

Legal Slot EDIT commands are DELETE, PRINT, CREATE, RENAME, EDIT, COPY,
 FIELD-EDIT, SHOWRELATIONS, SORT, SETDEFAULT, CLASSIFY, DISPLAY, MSG, and DONE
(You are editing unit MATH-OBJECT)
EDIT: create
Slot Name: MFIELD
Datatype: ?

Type the name of any unit classified as PRIMITIVE or SLOTUNIT
or Type HELP for a list.
Datatype: HEP
HEP is not a legal Datatype. Try again.
Datatype: HELP

Standard Datatypes

ATOM
BOOLEAN
DATATYPE
EXPR
INTEGER
INTERVAL
LISP
LIST
MACRO
NUMBER
STRING
TABLE
TEXT
UNIT

Datatype: ATOM
Role: R
Atom Editor
ae: DO
EDIT: DEL
Delete Slot: MFIELD
EDIT: CRE MFIELD
Datatype: UNIT
Role: R

UNIT Editor
UnE: DO
EDIT: DO
(Leaving EDIT of unit MATH-OBJECT)
:CRE MATH-FIELD
Parent of unit: ROOT SP
eh?
Relation: SPEC
Give a value for the DESCR slot
Text Editor
te: The fields of mathematics
te: DO
Do you want to see what slots have already been filled? Y

 DESCR:          (U)   from ROOT      <DESCR>     
The fields of mathematics
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:21:01
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:21:01


You can now create new slots or edit old ones.  When through type DONE
EDIT: CRE PRACTITIONER
Datatype: STRING
Role: R
String Editor
se: DO
EDIT: CRE DIFFICULTY
Datatype: NUMBER
Role: R

Number Editor
NE: R 1 10
NE: DO
EDIT: PR
Print (A,S,U,R,O,T,E,name): ?


Type ALL to print all slots.
Type T to print all TOPLEVEL slots.
Type S,U,R,O to print all slots of that role.
Type E to print all slots EXCEPT BOOKKEEPING slots.
Type name to print slot of that name.
Print (A,S,U,R,O,T,E,name): A
 DESCR:          (U)   from ROOT      <DESCR>     
The fields of mathematics
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:21:18
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:21:01
 PRACTITIONER:   (R)   *Top*          <STRING>    One of: 
 DIFFICULTY:     (R)   *Top*          <NUMBER>    RANGE ( 1 10 )

EDIT: DO
(Leaving EDIT of unit MATH-FIELD)
:CRE NUMBER-THEORY
Parent of unit: MATH-FIELD
Relation: S
eh?
Relation: SPEC
Give a value for the DESCR slot
Text Editor
te: THe branch of mathematics dealing with the natural numbers
te: DO
Do you want to see what slots have already been filled? N

You can now create new slots or edit old ones.  When through type DONE
EDIT: EDIT PRACTI≠
=PRACTITIONER
String Editor
se: ?

P	Print Value
S	Show Restrictions
A	Add new Choice
D	Delete Choice
U	Use restrictions as value
UNDO	Undo previous command
OK	Done
STOP	Abort the Edit

String  may be used to set the value to a particular string.
          (Quote Marks are optional if there are no blanks in the String.)

Otherwise - A list of strings separated by spaces may be used to restrict
            the choice of strings further.

NOTE:    If you want to set a string which corresponds to one of the commands,
         you must put the string in quotation marks.
se: NUMBER-THEORIST
se: DO
EDIT: EDIT DIFFICULTY

Number Editor
NE: 22
NE: DO
Value not in range 1 to 10
Edit again or Keep old value (E K or ?) ? E

Number Editor
NE: 5
NE: DO
EDIT: DO
(Leaving EDIT of unit NUMBER-THEORY)
TH-OBJECT
eh?
:EDIT MATH-OBJECT
PR A
 DESCR:          (U)   from ROOT      <DESCR>     
Constructs and functional operators from the realm of mathematics
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:28:47
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:12:09
 MFIELD:         (R)   *Top*          <UNIT>      NIL

EDIT: EDIT MFILD
=MFIELD

UNIT Editor
UnE: ?


Command	. . . Meaning . . .

PRINT	Print the current specification.

	(The following commands specify units.)
UNIT	Specify a particular unit explicitly. (E.g. UNIT FOO)
LIST	Specify that a unit is one in a list. (E.g. UNIT FOO1 FOO2 FOO3)
*INST	Specify that the unit is an instance of some other unit or
	of its progeny. (E.g. *I PROTO1)
*PROG	Specify that the unit is one of the progeny of some unit.
	(E.g.  *P PROTO1)
*DESCR	Specify that the unit is a progeny of some other unit with slots
	filled in a particular way.  (E.g. *D PARENT1)
*REF	Specify a reference to be resolved later.  This may refer to a
	slot in some other unit which will later contain the reference.
	(E.g. *R VECTOR OF *P PROBLEM-STATEMENT 
	refers to the vector slot of a unit whose prototype is a
	PROBLEM-STATEMENT.  Type ? after *R for options.)

You may also type the name of a unit with no command as long as it does not
conflict with one of the commands.  This will be treated like a UNIT command.
Type DONE (or OK) when you are finished.
UnE: *PROG MATH-FIELD
UnE: DO
EDIT: DO
(Leaving EDIT of unit MATH-OBJECT)
:EDIT NATURAL-NUMBERS
NATURAL-NUMBERS not a unit, try again.
Which unit do you want to edit? NONE
:CRE NATURAL-NUMBERS
Parent of unit: MATH-OBJECT SPEC
Give a value for the DESCR slot
Text Editor
te: The whole numbers 0,1,2,...
te: DO
Do you want to see what slots have already been filled? N

You can now create new slots or edit old ones.  When through type DONE
EDIT: EDIT MFIELD

UNIT Editor
UnE: ?


Command	. . . Meaning . . .

PRINT	Print the current specification.

	(The following commands specify units.)
UNIT	Specify a particular unit explicitly. (E.g. UNIT FOO)
LIST	Specify that a unit is one in a list. (E.g. UNIT FOO1 FOO2 FOO3)
*INST	Specify that the unit is an instance of some other unit or
	of its progeny. (E.g. *I PROTO1)
*PROG	Specify that the unit is one of the progeny of some unit.
	(E.g.  *P PROTO1)
*DESCR	Specify that the unit is a progeny of some other unit with slots
	filled in a particular way.  (E.g. *D PARENT1)
*REF	Specify a reference to be resolved later.  This may refer to a
	slot in some other unit which will later contain the reference.
	(E.g. *R VECTOR OF *P PROBLEM-STATEMENT 
	refers to the vector slot of a unit whose prototype is a
	PROBLEM-STATEMENT.  Type ? after *R for options.)

You may also type the name of a unit with no command as long as it does not
conflict with one of the commands.  This will be treated like a UNIT command.
Type DONE (or OK) when you are finished.
UnE: TOPOLOGY
TOPOLOGY not a unit.
Unit: ROOT
UnE: DO

ROOT not a *Progeny of MATH-FIELD
Edit again or Keep old value (E K or ?) ? E

UNIT Editor
UnE: NUMBER-THEORY
UnE: DO
EDIT: DO
(Leaving EDIT of unit NATURAL-NUMBERS)
:PR NATURAL-NUMBERS

Generalization is MATH-OBJECT

 DESCR:          (U)   from ROOT      <DESCR>     
The whole numbers 0,1,2,...
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:32:19
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:32:13
 MFIELD:         (S R) from MATH-OBJECT
                                      <UNIT>      NUMBER-THEORY

:EDIT NUMBER-THEORY
EDIT: EDIT DESCR
Text Editor
te: ?


PR	PRINT
ED	EDIT (Invoke a TENEX text editor.)
	eg. EDIT TV invokes TV-EDIT.  
	    EDIT    invokes same editor as last time.
DO	DONE
ST	STOP (abort the edit)

or you may simply type text to the te* prompt.  Each line of text will
be concatenated to the text that was entered previously.  To go back and
fix a previous line, you will need to use the EDIT command.

te: PR
THe branch of mathematics dealing with the natural numbers
te: ED SOS
(Be sure to exit with a U command)


(Leaving TEXT editor for slot DESCR in unit NUMBER-THEORY)
EDIT: PR
Print (A,S,U,R,O,T,E,name): A
 DESCR:          (U)   from ROOT      <DESCR>     
The branch of mathematics dealing with the natural numbers
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 14:35:19
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 14:25:40
 PRACTITIONER:   (S R) from MATH-FIELD
                                      <STRING>    NUMBER-THEORIST
 DIFFICULTY:     (S R) from MATH-FIELD
                                      <NUMBER>    5

EDIT: DO
(Leaving EDIT of unit NUMBER-THEORY)
:?

Legal commands are:
(COPY CREATE DELETE DISPLAY DONE EDIT GROUP MATCH MSG NETWORK OK PRINT RECORD RENAME SAVE SET-PROFILE SPECIALIZE SPLITUNIT SUMMARYFILE TRANSFER WHATSNEW ?MSGS) 
(You are editing Knowledge Base MATH)
(Use ↑K to recurse in the Network Editor.)
(Use ↑L to LOOK, that is, get a trace of where you are.)
:RENAME NATURAL-NUMBERS
New Name: FOOO
:COPY
Copy from Unit: FOOO
Copy into Unit: NATURAL-NUMBERS
Parent of NATURAL-NUMBERS: MATH-OBJECT
Relation: INST
:DEL FOOO
:DI BOOK≠ BO

=BOOKKEEPING
BOOKKEEPING
     CREATED
          MODIFIED
     CREATOR
          MODIFIER
     DESCR
:PR DESCR

Class is (HACKER SLOTUNIT BOOKKEEPING)
Generalization is BOOKKEEPING

 USER-INTERACTION:  
                 (U)   from BOOKKEEPING
                                      <BOOLEAN>   TRUE
 DESCR:          (U)   from ROOT      <DESCR>     
DESCR is the bookkeeping slotunit for description slots.
 VALUE:          (U)   *Top*          <TEXT>      
 CREATED:        (U)   from ROOT      <CREATED>    6-AUG-77 23:03:16
 MODIFIED:       (U)   from ROOT      <MODIFIED>   6-AUG-77 23:03:17
 CREATOR:        (U)   from ROOT      <CREATOR>   FRIEDLAND
 MODIFIER:       (U)   from ROOT      <MODIFIER>  FRIEDLAND

:PR CREATOR

Class is (HIDESLOT HACKER BOOKKEEPING SLOTUNIT)
Generalization is BOOKKEEPING

 USER-INTERACTION:  
                 (U)   from BOOKKEEPING
                                      <BOOLEAN>   
 DESCR:          (U)   from ROOT      <DESCR>     NIL
 MODIFIER:       (U)   from ROOT      <MODIFIER>  STEFIK
 CREATOR:        (U)   from ROOT      <CREATOR>   STEFIK
 EDIT:           (R)   *Top*          <LISP>      SETCREATOR
 VALUE:          (R)   *Top*          <STRING>    One of: 
 CREATED:        (U)   from ROOT      <CREATED>   21-JUL-77 08:08:27
 MODIFIED:       (U)   from ROOT      <MODIFIED>  18-Apr-78 14:28:14

:↓
eh?
:CREATE P-S
Parent of unit: 
:DI ROOT BO

ROOT
     BOOKKEEPING
          CREATED
               MODIFIED
          CREATOR
               MODIFIER
          DESCR
     DATATYPE
          ATOM
          BOOLEAN
          EXPR
          INTEGER
          INTERVAL
          LISP
          LIST
          MACRO
          NUMBER
          STRING
          TABLE
          TEXT
          UNIT
     LISPPROC
          WORKFN
               *EDITEXPR*
               *EDITMACRO*
               *PRINTMACRO*
               *TVMACRO*
     MATH-FIELD
          NUMBER-THEORY
     MATH-OBJECT
          *NATURAL-NUMBERS*
:πRE VSLOT
New Name: 
:CRE VSLOT
Parent of unit: ROOT
Relation: SPEC
Give a value for the DESCR slot
Text Editor
te: 
Do you want to see what slots have already been filled? 
:DEL VSLOT
:
:CRE VSLOT
Parent of unit: LISPPROC
SPEC
Give a value for the CODE slot
Lisp Editor
Assume function is VSLOT? ?
Type Y if yes.
Type N to set no function at all.
Assume function is VSLOT? N
No function set.
Give a value for the DESCR slot
Text Editor
te: Virtual slot -- one whose value is computed, not primitive
DO
Do you want to see what slots have already been filled? Y

 CODE:           (U)   from LISPPROC  <LISP>      NIL
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 15:04:44
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 DESCR:          (U)   from ROOT      <DESCR>     
Virtual slot -- one whose value is computed, not primitive
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 15:05:38
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT


You can now create new slots or edit old ones.  When through type DONE
EDIT: DO
(Leaving EDIT of unit VSLOT)
:CRE PROGENY*
Parent of unit: VSLOT
Relation: INST
Give a value for the CODE slot
Lisp Editor
Assume function is PROGENY*? Y
Current Fn: PROGENY*
Do you want to edit PROGENY* now? N
Leaving LISP editor for slot CODE of unit PROGENY*
Give a value for the DESCR slot
Text Editor
All descendants, including SPEC and INST offspring
DO
Do you want to see what slots have already been filled? y

 CODE:           (U)   from LISPPROC  <LISP>      PROGENY*
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 15:09:14
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 DESCR:          (U)   from ROOT      <DESCR>     
All descendants, including SPEC and INST offspring
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 15:11:13
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT


You can now create new slots or edit old ones.  When through type DONE
EDIT: do
(Leaving EDIT of unit PROGENY*)
:edit vslot
PR A
 CODE:           (U)   from LISPPROC  <LISP>      NIL
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 15:04:44
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 DESCR:          (U)   from ROOT      <DESCR>     
Virtual slot -- one whose value is computed, not primitive
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 15:21:55
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT



?

Legal Slot EDIT commands are DELETE, PRINT, CREATE, RENAME, EDIT, COPY,
 FIELD-EDIT, SHOWRELATIONS, SORT, SETDEFAULT, CLASSIFY, DISPLAY, MSG, and DONE
(You are editing unit VSLOT)
EDIT: cre stype
Datatype: list
Role: r

List Editor
LE: ?

PRINT		Print the list
DATATYPE d	Specify the list will contain Datatype d
ADD e1 e2 ...en	Add entries e1 through en to the list
DELETE m	Remove mth entry from the list
SUBLIST		Specify that this list is a sublist restriction 
EDIT		Add a new entry through the Datatype editor
LIST		Change SUBLIST restriction to a list
REPLACE e1 ...	Replace the current list with e1 ...
SIMPLE		Mark's SIMPLE list command
DONE		Return

LE: si
Datatype: atom
Atom Editor
ae: ok
LE: da
NIL is not a legal datatype. 
LE: da unit
LE: 
(UE level 1)
:create slot-combiners
Parent of unit: root
Relation: spec
Give a value for the DESCR slot
Text Editor
te: Ways of forming new virtual slots out of preexisting slots and vslots
DO
Do you want to see what slots have already been filled? n

You can now create new slots or edit old ones.  When through type DONE
do
(Leaving EDIT of unit SLOT-COMBINERS)
:ok
(Leaving UE level 1)
EDIT: 

 . . . Trace Back . . .

Editing Unit: VSLOT
Network Editor

EDIT: di
Slots: (CODE CREATED CREATOR DESCR MODIFIED MODIFIER STYPE)
EDIT: ed stype

List Editor
LE: pr
No Value Set.
LE: si
Datatype: unit

UNIT Editor
UnE: *p slot-combiners
UnE: do
LE: ok
EDIT: pr a
 CODE:           (U)   from LISPPROC  <LISP>      NIL
 CREATED:        (U)   from ROOT      <CREATED>   10-Nov-78 15:04:44
 CREATOR:        (U)   from ROOT      <CREATOR>   LENAT
 DESCR:          (U)   from ROOT      <DESCR>     
Virtual slot -- one whose value is computed, not primitive
 MODIFIED:       (U)   from ROOT      <MODIFIED>  10-Nov-78 15:21:55
 MODIFIER:       (U)   from ROOT      <MODIFIER>  LENAT
 STYPE:          (R)   *Top*          <LIST>      Sublist = Progeny* of 
SLOT-COMBINERS

EDIT: 
(UE level 1)
:se br us pr do

Current User Profile

BRIEF USER NOISY DATAMEDIA 

:ok
(Leaving UE level 1)
EDIT: pr a
DESCR:           
Virtual slot -- one whose value is computed, not primitive
STYPE:           Sublist = Progeny* of SLOT-COMBINERS

EDIT: del stype
EDIT: cre stype
Datatype: unit
Role: r

UNIT Editor
UnE: *p slot-combiners
UnE: do
EDIT: cre built-from
Datatype: list
Role: r

List Editor
LE: si
Datatype: atom
Atom Editor
ae: ok
LE: ok
EDIT: pr a
DESCR:           
Virtual slot -- one whose value is computed, not primitive
STYPE:           Progeny* of SLOT-COMBINERS
BUILT-FROM:      Sublist of ATOMs

EDIT: ok
(Leaving EDIT of unit VSLOT)
:create direct-line
Parent of unit: vslot
Relation: inst
Give a value for the CODE slot
Lisp Editor
Assume function is DIRECT-LINE? n
No function set.
Give a value for the DESCR slot
Text Editor
te: The ancestors and progeny of a unit
te: do
Do you want to see what slots have already been filled? y

DESCR:           The ancestors and progeny of a unit
STYPE:           Progeny* of SLOT-COMBINERS
BUILT-FROM:      Sublist of ATOMs


R slots must get a terminal value for instances.
STYPE:

UNIT Editor
UnE: 
(UE level 1)
:cre union-combiner
Parent of unit: slot-combiners
Relation: inst
Give a value for the DESCR slot
Text Editor
te: A slot-combiner that forms a new slot as the union of old ones
do
Do you want to see what slots have already been filled? y

DESCR:           
A slot-combiner that forms a new slot as the union of old ones


You can now create new slots or edit old ones.  When through type DONE
EDIT: ok
(Leaving EDIT of unit UNION-COMBINER)
:ok
(Leaving UE level 1)
UnE: union-combiner
NIL not a unit.
Unit: union-combiner
UnE: ok
BUILT-FROM:

You can now create new slots or edit old ones.  When through type DONE
EDIT: pr a
DESCR:           
A slot-combiner that forms a new slot as the union of old ones

EDIT: di
Slots: (DESCR MODIFIER CREATOR MODIFIED CREATED)
EDIT: 

 . . . Trace Back . . .

Editing Unit: UNION-COMBINER
Function: UE-CREATE
Network Editor

EDIT: pr a
DESCR:           
A slot-combiner that forms a new slot as the union of old ones

EDIT: ok
(Leaving EDIT of unit UNION-COMBINER)
:ed direct-line
EDIT: pr a
DESCR:           The ancestors and progeny of a unit
STYPE:           UNION-COMBINER
BUILT-FROM:      Sublist of ATOMs

EDIT: ed built-from

List Editor
LE: ?

PRINT		Print the list
DATATYPE d	Specify the list will contain Datatype d
ADD e1 e2 ...en	Add entries e1 through en to the list
DELETE m	Remove mth entry from the list
SUBLIST		Specify that this list is a sublist restriction 
EDIT		Add a new entry through the Datatype editor
LIST		Change SUBLIST restriction to a list
REPLACE e1 ...	Replace the current list with e1 ...
SIMPLE		Mark's SIMPLE list command
DONE		Return

LE: replace progeny* parent
LE: pr
List of ATOMs = (PROGENY*, PARENT)
LE: ok
pr a
DESCR:           The ancestors and progeny of a unit
STYPE:           UNION-COMBINER
BUILT-FROM:      List of ATOMs = (PROGENY*, PARENT)

EDIT: di
Slots: (CODE CREATED CREATOR DESCR MODIFIED MODIFIER STYPE BUILT-FROM)
EDIT: cl
CLASSIFY: pr
Current classifications are:  NIL
CLASSIFY: ok
EDIT: cl
CLASSIFY: add
New Classifications: lisp
Function not defined
CLASSIFY: ok
EDIT: ok
(Leaving EDIT of unit DIRECT-LINE)
:cre code
Parent of unit: lispproc
Relation: spec
Give a value for the CODE slot
Lisp Editor
Assume function is CODE? y
Current Fn: CODE
CODE defined with standard arguments.
Do you want to edit CODE now? y
edit
*p
=P
(LAMBDA (VALUE RESTRICTION SLOT UNIT) (CLISP: FAST))
*(N (* This takes the type of combiner (STYPE) and the
arguments out of which the new virtual slot is to be built
(BUILT-FROM), and applies the former to the latter)
(APPLY* (STYPE UNIT) (BUILT-FROM UNIT)))
*P
(LAMBDA (VALUE RESTRICTION SLOT UNIT) (CLISP: FAST)   **COMMENT**   (
APPLY* & &))
*-1 P
(APPLY* (STYPE UNIT) (BUILT-FROM UNIT))
*(1 APPLY)
*P
(APPLY (STYPE UNIT) (BUILT-FROM UNIT))
*3 P
(BUILT-FROM UNIT)
*MBD GET-LIST
*P
(GET-LIST (BUILT-FROM UNIT))
*BO 2
*P
(GET-LIST BUILT-FROM UNIT)
*2 MBD QUOTE
0 0 PP
(APPLY (STYPE UNIT)
       (GET-LIST (QUOTE BUILT-FROM)
                 UNIT))
*2 P
(STYPE UNIT)
*(MBD (OR (LITATOM *) (ERROR!]
0 PP
(APPLY (OR (LITATOM (STYPE UNIT))
           (ERROR!))
       (GET-LIST (QUOTE BUILT-FROM)
                 UNIT))
*E (LITATOM 'R)
T
*P
(APPLY (OR & &) (GET-LIST & UNIT))
*2 P
(OR (LITATOM &) (ERROR!))
*2 P
(LITATOM (STYPE UNIT))
*0 P
(OR (LITATOM &) (ERROR!))
*XTR 2
0 P
(APPLY (LITATOM &) (GET-LIST & UNIT))
*MBD NLSETQ
*P
(NLSETQ (APPLY & &))
*2 2 XTR 2
0 P
(APPLY (STYPE UNIT) (GET-LIST & UNIT))
*0 P
(NLSETQ (APPLY & &))
*P
(NLSETQ (APPLY & &))
*MBD DEFINE UNIT
*P
(DEFINE UNIT (NLSETQ &))
*LI 2
*2 P
(UNIT (NLSETQ &))
*(-1 LIST)
*(1 CONS)
*0 PP
[DEFINE (CONS UNIT (NLSETQ (APPLY (STYPE UNIT)
                                  (GET-LIST (QUOTE BUILT-FROM)
                                            UNIT]
*2 3 P
(NLSETQ (APPLY & &))
*(MBD OR * (ERROR!]
0 P
(CONS UNIT OR (NLSETQ &) (ERROR!))
*LI 3
P
(CONS UNIT (OR & &))
*PP
(CONS UNIT (OR (NLSETQ (APPLY (STYPE UNIT)
                              (GET-LIST (QUOTE BUILT-FROM)
                                        UNIT)))
               (ERROR!)))
*0 P
(DEFINE (CONS UNIT &))
*0 P
(LAMBDA (VALUE RESTRICTION SLOT UNIT) (CLISP: FAST)   **COMMENT**   (
DEFINE &))
*(N (CLASSIFY UNIT 'LISP]
*-1 P
(CLASSIFY UNIT (QUOTE LISP))
*(B (PUTVALUE 'CODE UNIT UNIT]
*P
... (PUTVALUE & UNIT UNIT) (CLASSIFY UNIT &))
*OK
Leaving LISP editor for slot CODE of unit CODE
Give a value for the DESCR slot
Text Editor
te: Puts together a virtual slot's access definition, by applying its STYPE combiner to the old slots from which the new one is to be BUILT-FROM
te: do
Do you want to see what slots have already been filled? y

DESCR:           
Puts together a virtual slot's access definition, by applying its STYPE combiner to the old slots from which the new one is to be BUILT-FROM


You can now create new slots or edit old ones.  When through type DONE
EDIT: do
(Leaving EDIT of unit CODE)
:ed slot-combiners
pr a
DESCR:           
Ways of forming new virtual slots out of preexisting slots and vslots

EDIT: do
(Leaving EDIT of unit SLOT-COMBINERS)
:rename 
slot-combiners foo
:copy 
?
Enter the name of the unit whose slots will be copied.
Copy from Unit: foo
Copy into Unit: slot-combiners
Parent of SLOT-COMBINERS: lispproc
Relation: spec
:del foo
Delete Progeny too? n
:pr union-combiner
:di root bo

ROOT
     LISPPROC
          CODE
          SLOT-COMBINERS
          VSLOT
               *DIRECT-LINE*
               *PROGENY**
     MATH-FIELD
          NUMBER-THEORY
     MATH-OBJECT
          *NATURAL-NUMBERS*
:pr slot-combiners

Generalization is LISPPROC

DESCR:           
Ways of forming new virtual slots out of preexisting slots and vslots

:pr direct-line

Prototype is VSLOT

DESCR:           The ancestors and progeny of a unit
STYPE:           UNION-COMBINER
BUILT-FROM:      List of ATOMs = (PROGENY*, PARENT)

:create union-combiner
Parent of unit: slot-combiners
Relation: inst
Give a value for the CODE slot
Lisp Editor
Assume function is UNION-COMBINER? y
Current Fn: UNION-COMBINER
UNION-COMBINER defined with standard arguments.
πinterrupted before INTTY

(INTTY broken)
:bt
=BT
INTTY
*PROG*LAM
EDITLISP
APPLY
ERRORSET
*PROG*LAM
SLOTMSG
*PROG*LAM
EDITSLOT
*PROG*LAM
*PROG*LAM
UE-CREATE
ERRORSET
*PROG*LAM
UE-TOP
APPLY
MAKESYSOUT
**TOP**

:ok
=OK
Do you want to edit UNION-COMBINER now? y
INTTY
edit
*p
=P
(LAMBDA (VALUE RESTRICTION SLOT UNIT) (CLISP: FAST))
*(2 (S1 S2))
*P
(LAMBDA (S1 S2) (CLISP: FAST))
*(N (LIST 'LAMBDA '(UNIT) (LIST 'UNION (S1 UNIT) (S2 UNIT)]
*P
(LAMBDA (S1 S2) (CLISP: FAST) (LIST & & &))
*4 P
(LIST (QUOTE LAMBDA) (QUOTE &) (LIST & & &))
*4 P
(LIST (QUOTE UNION) (S1 UNIT) (S2 UNIT))
*3 P
(S1 UNIT)
*(-1 LIST)
*P
(LIST S1 UNIT)
*3 MBD QUOTE
*NX!
=!NX
*P
(S2 UNIT)
*REDO FROM -4

!NX  ?
*P
(QUOTE UNIT)
*0 P
(LIST S2 (QUOTE UNIT))
*0 P
(LIST (QUOTE UNION) (LIST S1 &) (LIST S2 &))
*0 0 PP
[LAMBDA (S1 S2)
  (CLISP: FAST)
  (LIST (QUOTE LAMBDA)
        (QUOTE (UNIT))
        (LIST (QUOTE UNION)
              (LIST S1 (QUOTE UNIT))
              (LIST S2 (QUOTE UNIT]
*OK
Leaving LISP editor for slot CODE of unit UNION-COMBINER
Give a value for the DESCR slot
Text Editor
te: Form a new virtual slot as the union of two old slots
te: do
Do you want to see what slots have already been filled? y

DESCR:           Form a new virtual slot as the union of two old slots


You can now create new slots or edit old ones.  When through type DONE
EDIT: cl pr
Current classifications are:  (LISP)
CLASSIFY: ok
EDIT: ok
(Leaving EDIT of unit UNION-COMBINER)
:rec
Recording stopped. (File TRANS1 closed).